﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using BolsaTrabajo.BusinessEntities;

namespace BolsaTrabajo.DataAccess
{
    public class PostulacionEmpresaData
    {
        private String stConnection = String.Empty;

        public PostulacionEmpresaData()
        {
            stConnection = System.Configuration.ConfigurationManager.ConnectionStrings["ApplicationServices"].ToString();
        }

        public bool Registrar(PostulacionEmpresa item)
        {
            SqlConnection cn = new SqlConnection(stConnection);
            SqlCommand cmd = cn.CreateCommand();
            cmd.CommandTimeout = 216000000;
            cmd.CommandText = "usp_PostulacionEmpresa_Registrar";
            cmd.CommandType = CommandType.StoredProcedure;

            SQLHelper.AddParam(ref cmd, "@applicationId", ParameterDirection.Input, SqlDbType.UniqueIdentifier, item.ApplicationId);
            SQLHelper.AddParam(ref cmd, "@IdPostulante", ParameterDirection.Input, SqlDbType.Int, item.IdPostulante);
            SQLHelper.AddParam(ref cmd, "@IdAvisoTrabajo", ParameterDirection.Input, SqlDbType.Int, item.IdAvisoTrabajo);
            //SQLHelper.AddParam(ref cmd, "@IdEmpresa", ParameterDirection.Input, SqlDbType.Int, item.IdEmpresa);
            SQLHelper.AddParam(ref cmd, "@DescripcionPostulante", ParameterDirection.Input, SqlDbType.VarChar, item.DescripcionPostulante);
            SQLHelper.AddParam(ref cmd, "@IdUsuarioCreacion", ParameterDirection.Input, SqlDbType.UniqueIdentifier, item.IdUsuarioCreacion);
            SQLHelper.AddParam(ref cmd, "@FechaCreacion", ParameterDirection.Input, SqlDbType.DateTime, item.FechaCreacion);
            SQLHelper.AddParam(ref cmd, "@IdEstado", ParameterDirection.Input, SqlDbType.Bit, item.IdEstado);

            bool resultado = false;

            try
            {
                cn.Open();
                cmd.ExecuteNonQuery();
                resultado = true;
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (cn.State == ConnectionState.Open)
                {
                    cn.Close();
                }
                cn.Dispose();
            }
            return resultado;
        }

        public bool Actualizar(PostulacionEmpresa item)
        {
            SqlConnection cn = new SqlConnection(stConnection);
            SqlCommand cmd = cn.CreateCommand();
            cmd.CommandTimeout = 216000000;
            cmd.CommandText = "usp_PostulacionEmpresa_Actualizar";
            cmd.CommandType = CommandType.StoredProcedure;

            SQLHelper.AddParam(ref cmd, "@IdPostulante", ParameterDirection.Input, SqlDbType.Int, item.IdPostulante);
            SQLHelper.AddParam(ref cmd, "@IdAvisoTrabajo", ParameterDirection.Input, SqlDbType.Int, item.IdAvisoTrabajo);
            SQLHelper.AddParam(ref cmd, "@IdEmpresa", ParameterDirection.Input, SqlDbType.Int, item.IdEmpresa);
            SQLHelper.AddParam(ref cmd, "@DescripcionPostulante", ParameterDirection.Input, SqlDbType.VarChar, item.DescripcionPostulante);
            SQLHelper.AddParam(ref cmd, "@Seleccionado", ParameterDirection.Input, SqlDbType.Bit, item.Seleccionado);
            SQLHelper.AddParam(ref cmd, "@IdUsuarioCreacion", ParameterDirection.Input, SqlDbType.Int, item.IdUsuarioCreacion);
            SQLHelper.AddParam(ref cmd, "@FechaCreacion", ParameterDirection.Input, SqlDbType.DateTime, item.FechaCreacion);
            SQLHelper.AddParam(ref cmd, "@IdEstado", ParameterDirection.Input, SqlDbType.Int, item.IdEstado);

            bool resultado = false;

            try
            {
                cn.Open();
                cmd.ExecuteNonQuery();
                resultado = true;
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (cn.State == ConnectionState.Open)
                {
                    cn.Close();
                }
                cn.Dispose();
            }
            return resultado;
        }

        public bool Eliminar(PostulacionEmpresa item)
        {
            SqlConnection cn = new SqlConnection(stConnection);
            SqlCommand cmd = cn.CreateCommand();
            cmd.CommandTimeout = 216000000;
            cmd.CommandText = "usp_PostulacionEmpresa_Eliminar";
            cmd.CommandType = CommandType.StoredProcedure;

            SQLHelper.AddParam(ref cmd, "@IdPostulante", ParameterDirection.Input, SqlDbType.Int, item.IdPostulante);
            SQLHelper.AddParam(ref cmd, "@IdAvisoTrabajo", ParameterDirection.Input, SqlDbType.Int, item.IdAvisoTrabajo);
            SQLHelper.AddParam(ref cmd, "@IdEmpresa", ParameterDirection.Input, SqlDbType.Int, item.IdEmpresa);

            bool resultado = false;

            try
            {
                cn.Open();
                cmd.ExecuteNonQuery();
                resultado = true;
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (cn.State == ConnectionState.Open)
                {
                    cn.Close();
                }
                cn.Dispose();
            }
            return resultado;
        }

        //public List<PostulacionEmpresa> ListarPostulacionEmpresaPorEmpresa(Int32 idEmpresa)
        //{
        //    SqlConnection cn = new SqlConnection(stConnection);
        //    SqlCommand cmd = cn.CreateCommand();
        //    cmd.CommandTimeout = 216000000;
        //    cmd.CommandText = "usp_PostulacionEmpresa_Listar";
        //    cmd.CommandType = CommandType.StoredProcedure;

        //    SQLHelper.AddParam(ref cmd, "@idEmpresa", ParameterDirection.Input, SqlDbType.Int, idEmpresa);

        //    List<PostulacionEmpresa> lista = new List<PostulacionEmpresa>();
        //    try
        //    {
        //        cn.Open();
        //        SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        //        while (dr.Read())
        //        {
        //            PostulacionEmpresa item = new PostulacionEmpresa();

        //            item.UserId = dr.GetGuid(dr.GetOrdinal("UserId"));
        //            item.RoleId = dr.GetGuid(dr.GetOrdinal("RoleId"));

        //            lista.Add(item);

        //            item = null;
        //        }
        //        dr.Close();
        //    }
        //    catch (Exception)
        //    {

        //        throw;
        //    }
        //    finally
        //    {
        //        if (cn.State == ConnectionState.Open)
        //            cn.Close();
        //        cn.Dispose();
        //    }
        //    return lista;
        //}
    }
}
